package edu.szcu.vitaguard.dao;

import edu.szcu.vitaguard.entity.DictRegType;
import org.apache.ibatis.annotations.*;

import java.util.List;

/**
 * 预约类型字典DAO接口
 */
@Mapper
public interface DictRegTypeDao {

    /**
     * 插入预约类型
     * @param dictRegType 预约类型对象
     * @return 影响的行数
     */
    @Insert("INSERT INTO dict_reg_type(reg_type_name, description, create_time) " +
            "VALUES(#{regTypeName}, #{description}, #{createTime})")
    @Options(useGeneratedKeys = true, keyProperty = "regTypeId")
    int insert(DictRegType dictRegType);

    /**
     * 根据ID查询预约类型
     * @param regTypeId 预约类型ID
     * @return 预约类型对象
     */
    @Select("SELECT * FROM dict_reg_type WHERE reg_type_id = #{regTypeId}")
    DictRegType selectById(Integer regTypeId);

    /**
     * 查询所有预约类型
     * @return 预约类型列表
     */
    @Select("SELECT * FROM dict_reg_type")
    List<DictRegType> selectAll();

    /**
     * 根据类型名称查询预约类型
     * @param regTypeName 预约类型名称
     * @return 预约类型对象
     */
    @Select("SELECT * FROM dict_reg_type WHERE reg_type_name = #{regTypeName}")
    DictRegType selectByName(String regTypeName);

    /**
     * 更新预约类型
     * @param dictRegType 预约类型对象
     * @return 影响的行数
     */
    @Update("UPDATE dict_reg_type SET reg_type_name = #{regTypeName}, " +
            "description = #{description} WHERE reg_type_id = #{regTypeId}")
    int update(DictRegType dictRegType);

    /**
     * 删除预约类型
     * @param regTypeId 预约类型ID
     * @return 影响的行数
     */
    @Delete("DELETE FROM dict_reg_type WHERE reg_type_id = #{regTypeId}")
    int deleteById(Integer regTypeId);
}
